home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / uhren & terminkalender / organizer / kalender / txt / commands.mod < prev    next >
Text File  |  1996-04-07  |  3KB  |  133 lines

  1.  IMPLEMENTATION MODULE Commands; (* Copyright 1993 by Kai Hofmann *)
  2.  
  3.  (*$ StackChk    := FALSE *)
  4.  (*$ RangeChk    := FALSE *)
  5.  (*$ OverflowChk := FALSE *)
  6.  (*$ NilChk      := FALSE *)
  7.  (*$ CaseChk     := FALSE *)
  8.  (*$ ReturnChk   := FALSE *)
  9.  (*$ LargeVars   := FALSE *)
  10.  (*$ EntryClear  := TRUE  *)
  11.  (*$ Volatile    := TRUE  *)
  12.  (*$ StackParms  := TRUE  *)
  13.  (*$ CStrings    := TRUE  *)
  14.  
  15.  
  16.  FROM SYSTEM    IMPORT    ADR,ADDRESS;
  17.  FROM Arts    IMPORT    wbStarted;
  18.  FROM Arguments    IMPORT    NumArgs, GetArg, quoted;
  19.  FROM String    IMPORT    Copy,ComparePart,Length;
  20.  FROM Storage    IMPORT    ALLOCATE,DEALLOCATE;
  21.  FROM IconL    IMPORT    GetDiskObject,FreeDiskObject,FindToolType,
  22.             MatchToolValue;
  23.  FROM WorkbenchD IMPORT    DiskObject,DiskObjectPtr,WBArg,WBArgPtr;
  24.  
  25.  
  26.  VAR
  27.     num    : INTEGER;
  28.     dptr    : DiskObjectPtr;
  29.     len    : INTEGER;
  30.     name    : ARRAY [0..60] OF CHAR;
  31.  
  32.  
  33.  
  34. (* -------------------- Interne Prozeduren -------------------- *)
  35.  
  36.  PROCEDURE CheckOpt (option : string) : INTEGER;
  37.  
  38.  VAR
  39.     i    : INTEGER;
  40.     len    : INTEGER;
  41.     arg    : string;
  42.  
  43.  BEGIN
  44.    IF wbStarted THEN
  45.      IF FindToolType(dptr^.toolTypes,ADR(option)) # NIL THEN
  46.        RETURN(1);
  47.      ELSE
  48.        RETURN(-1);
  49.      END;
  50.    ELSE
  51.      i := 0;
  52.      WHILE i < num DO
  53.        INC(i);
  54.        GetArg(i,arg,len);
  55.        IF Length(option) > len THEN
  56.          len := Length(option);
  57.        END;
  58.        IF ComparePart(option,0,len,arg,FALSE) = 0 THEN
  59.          RETURN(i);
  60.        END;
  61.      END;
  62.      RETURN(-1);
  63.    END;
  64.  END CheckOpt;
  65.  
  66. (* -------------------- Externe Prozeduren -------------------- *)
  67.  
  68.  PROCEDURE CheckOption (option : string) : BOOLEAN;
  69.  
  70.  BEGIN
  71.    RETURN(CheckOpt(option)>0);
  72.  END CheckOption;
  73.  
  74.  
  75.  PROCEDURE GetOptionParam (option : string; VAR quotes : BOOLEAN) : strptr;
  76.  
  77.  VAR
  78.     i    : INTEGER;
  79.     len    : INTEGER;
  80.     arg    : string;
  81.     ptr    : strptr;
  82.  
  83.  BEGIN
  84.    IF wbStarted THEN
  85.      quotes := TRUE;
  86.      ptr := FindToolType(dptr^.toolTypes,ADR(option));
  87.      RETURN(ptr);
  88.    ELSE
  89.      i := CheckOpt(option);
  90.      INC(i);
  91.      IF i <= num THEN
  92.        GetArg(i,arg,len);
  93.        quotes := quoted;
  94.        ALLOCATE(ptr,SIZE(string));
  95.        Copy(ptr^,arg);
  96.        RETURN(ptr);
  97.      ELSE
  98.        RETURN(NIL);
  99.      END;
  100.    END;
  101.  END GetOptionParam;
  102.  
  103.  
  104.  PROCEDURE Killstr (param : strptr);
  105.  
  106.  BEGIN
  107.    IF (param # NIL) AND (~wbStarted) THEN
  108.      DEALLOCATE(param,SIZE(string));
  109.    END;
  110.  END Killstr;
  111.  
  112.  
  113.  PROCEDURE AnzArg() : INTEGER;
  114.  
  115.  BEGIN
  116.    RETURN(num);
  117.  END AnzArg;
  118.  
  119.  
  120.  BEGIN
  121.    IF wbStarted THEN
  122.      GetArg(0,name,len);
  123.      dptr := GetDiskObject(ADR(name));
  124.      num := 1;
  125.    ELSE
  126.      num := NumArgs();
  127.    END;
  128.  CLOSE
  129.    IF wbStarted THEN
  130.      FreeDiskObject(dptr);
  131.    END;
  132.  END Commands.
  133.